`ifndef CASE0_SV
`define CASE0_SV

class my_case0 extends base_test;

    `uvm_component_utils(my_case0)

    function new(string name = "my_case0", uvm_component parent = null);
        super.new(name, parent);
    endfunction
    
    extern function void build_phase(uvm_phase phase);
endclass

function void my_case0::build_phase(uvm_phase phase);
    // Variable declaration must be at the beginning.
    super.build_phase(phase);
    // default_sequence
    uvm_config_db#(uvm_object_wrapper)::set(this, "env.i_agt.sqr.main_phase", "default_sequence", case0_sequence::type_id::get());
    // Test for <get_type_name>, it will return name of the class,
    // which was resistered by `uvm_component_utils.
    $display("%s", get_type_name());
    // Test for <get_parent()>, the return value is a objection, NOT class
    $display($sformatf("parent is %s",get_parent().get_type_name())); 
endfunction
`endif
